/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Cie9mcPresentacion.java
 *
 * Created on 24/11/2010, 14:39:42
 */

package presentacion.cie9mc;

import hibernate.objeto.Cie9mc;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
import logica.CapaLogica;
import logica.Cie9mcLogica;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.maquetado.InformeError;
import presentacion.utilidad.BarMenu;
import presentacion.utilidad.MensajePresentacion;

/**
 *
 * @author Rafael
 */
public class Cie9mcPresentacion extends javax.swing.JDialog {

    /** Creates new form Cie9mcPresentacion */
    public Cie9mcPresentacion(java.awt.Frame parent, boolean modal, Cie9mc unaCie9mc) {
        super(parent, modal);

        cie9mc = unaCie9mc;
        cancelado = true;

        initComponents();
        personalizarGUI();
        setLocationRelativeTo(null);
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI() {
        this.setJMenuBar(BarMenu.createMenuBarCie9mc(this));

        if (CapaPresentacion.modoCarga) {
            modoCarga();
        } else if (CapaPresentacion.modoModificacion) {
            modoModificacion();
        } else if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
    }

    /**
     * Setea la ventana en modo carga.
     *
     */
    private void modoCarga() {
        this.setTitle("Agregar Cie9MC");
        cie9mc = new Cie9mc();
        codigoEnfermedad.setVisible(false);
        codigoEnfermedad.setVisible(false);
    }

    /**
     * Setea la ventana en modo modificación.
     *
     */
    private void modoModificacion() {
        this.setTitle("Modificar Cie9MC");
        exhibirDatosEnPantalla();
    }

    /**
     * Setea la ventana en modo visualizacion.
     *
     */
    private void modoVisualizacion() {
        this.setTitle("Cie9MC");
        setearEstadoCampos(false);
        exhibirDatosEnPantalla();
        botonCancelar.requestFocus();
        CapaPresentacion.personalizarBotonesEnVisualizacion(
                textoDescriptivoVentana, botonAceptar, botonCancelar);
    }

    /**
     * En caso de que se trate de la modificación de una enfermedad, se cargan
     * los datos de la misma en los distintos campos de la pantalla.
     *
     */
    private void exhibirDatosEnPantalla() {
        //Seteo del código
        codigoEnfermedad.setText("Código: " +
                cie9mc.getCodigoCie9mc().toUpperCase());

        //Seteo del nombre
        nombreEnfermedad.setText(cie9mc.getDetalleCie9mc());
        nombreEnfermedad.setCaretPosition(0);

        //Seteo de la clasificación
        if (cie9mc.getClasificacionCie9mc().equalsIgnoreCase("G")) {
            clasificacionGeneralEnfermedad.setSelected(true);
        } else if (cie9mc.getClasificacionCie9mc().equalsIgnoreCase("E")) {
            clasificacionCodigosEEnfermedad.setSelected(true);
        } else if (cie9mc.getClasificacionCie9mc().equalsIgnoreCase("V")) {
            clasificacionCodigosVEnfermedad.setSelected(true);
            } else if (cie9mc.getClasificacionCie9mc().equalsIgnoreCase("M")) {
            clasificacionCodigosMEnfermedad.setSelected(true);
        } else if (cie9mc.getClasificacionCie9mc().equalsIgnoreCase("P")) {
            clasificacionProcedimientosEnfermedad.setSelected(true);
        }

        //Seteo de la clasificación
        if (cie9mc.getAreaCie9mc().equalsIgnoreCase("D")) {
           areaDiagnosticosEnfermedad.setSelected(true);
        } else if (cie9mc.getAreaCie9mc().equalsIgnoreCase("P")) {
           areaProcedimientosEnfermedad.setSelected(true);
        }
    }
    
    /**
     * Pone en false la propiedad enabled de todos los campos de ingreso.
     *
     */
    private void setearEstadoCampos(boolean estado) {
        nombreEnfermedad.setEnabled(estado);
        clasificacionGeneralEnfermedad.setEnabled(estado);
        clasificacionCodigosEEnfermedad.setEnabled(estado);
        clasificacionCodigosVEnfermedad.setEnabled(estado);
        clasificacionCodigosMEnfermedad.setEnabled(estado);
        clasificacionProcedimientosEnfermedad.setEnabled(estado);
        areaDiagnosticosEnfermedad.setEnabled(estado);
        areaProcedimientosEnfermedad.setEnabled(estado);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoDescriptivoVentana = new javax.swing.JLabel();
        panelEnfermedad = new javax.swing.JPanel();
        textoNombreEnfermedad = new javax.swing.JLabel();
        textoClasificacionEnfermedad = new javax.swing.JLabel();
        textoAreaEnfermedad = new javax.swing.JLabel();
        nombreEnfermedad = new javax.swing.JTextField();
        clasificacionGeneralEnfermedad = new javax.swing.JRadioButton();
        clasificacionCodigosEEnfermedad = new javax.swing.JRadioButton();
        clasificacionCodigosVEnfermedad = new javax.swing.JRadioButton();
        clasificacionCodigosMEnfermedad = new javax.swing.JRadioButton();
        clasificacionProcedimientosEnfermedad = new javax.swing.JRadioButton();
        areaProcedimientosEnfermedad = new javax.swing.JRadioButton();
        areaDiagnosticosEnfermedad = new javax.swing.JRadioButton();
        botonAceptar = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();
        codigoEnfermedad = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Agregar Cie 9 MC");
        setMinimumSize(new java.awt.Dimension(493, 286));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        textoDescriptivoVentana.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVentana.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana.setText("Ingrese los datos de la enfermedad");
        textoDescriptivoVentana.setPreferredSize(new java.awt.Dimension(320, 20));

        panelEnfermedad.setPreferredSize(new java.awt.Dimension(457, 156));

        textoNombreEnfermedad.setFont(Fuente.FUENTE_LABEL);
        textoNombreEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        textoNombreEnfermedad.setText("Nombre");
        textoNombreEnfermedad.setPreferredSize(new java.awt.Dimension(95, 20));

        textoClasificacionEnfermedad.setFont(Fuente.FUENTE_LABEL);
        textoClasificacionEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        textoClasificacionEnfermedad.setText("Clasificación");
        textoClasificacionEnfermedad.setPreferredSize(new java.awt.Dimension(95, 20));

        textoAreaEnfermedad.setFont(Fuente.FUENTE_LABEL);
        textoAreaEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        textoAreaEnfermedad.setText("Área");
        textoAreaEnfermedad.setPreferredSize(new java.awt.Dimension(95, 20));

        nombreEnfermedad.setFont(Fuente.FUENTE_TEXTFIELD);
        nombreEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        nombreEnfermedad.setPreferredSize(new java.awt.Dimension(326, 20));

        clasificacionGeneralEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        clasificacionGeneralEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        clasificacionGeneralEnfermedad.setText("(G)eneral");
        clasificacionGeneralEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        clasificacionGeneralEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clasificacionGeneralEnfermedadActionPerformed(evt);
            }
        });

        clasificacionCodigosEEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        clasificacionCodigosEEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        clasificacionCodigosEEnfermedad.setText("Códigos (E)");
        clasificacionCodigosEEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        clasificacionCodigosEEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clasificacionCodigosEEnfermedadActionPerformed(evt);
            }
        });

        clasificacionCodigosVEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        clasificacionCodigosVEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        clasificacionCodigosVEnfermedad.setText("Códigos (V)");
        clasificacionCodigosVEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        clasificacionCodigosVEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clasificacionCodigosVEnfermedadActionPerformed(evt);
            }
        });

        clasificacionCodigosMEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        clasificacionCodigosMEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        clasificacionCodigosMEnfermedad.setText("Códigos (M)");
        clasificacionCodigosMEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        clasificacionCodigosMEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clasificacionCodigosMEnfermedadActionPerformed(evt);
            }
        });

        clasificacionProcedimientosEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        clasificacionProcedimientosEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        clasificacionProcedimientosEnfermedad.setText("(P)rocedimientos");
        clasificacionProcedimientosEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        clasificacionProcedimientosEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clasificacionProcedimientosEnfermedadActionPerformed(evt);
            }
        });

        areaProcedimientosEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        areaProcedimientosEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        areaProcedimientosEnfermedad.setText("(P)rocedimientos");
        areaProcedimientosEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        areaProcedimientosEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                areaProcedimientosEnfermedadActionPerformed(evt);
            }
        });

        areaDiagnosticosEnfermedad.setFont(Fuente.FUENTE_RADIOBUTTON);
        areaDiagnosticosEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        areaDiagnosticosEnfermedad.setText("(D)iagnósticos");
        areaDiagnosticosEnfermedad.setPreferredSize(new java.awt.Dimension(110, 20));
        areaDiagnosticosEnfermedad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                areaDiagnosticosEnfermedadActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelEnfermedadLayout = new javax.swing.GroupLayout(panelEnfermedad);
        panelEnfermedad.setLayout(panelEnfermedadLayout);
        panelEnfermedadLayout.setHorizontalGroup(
            panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEnfermedadLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelEnfermedadLayout.createSequentialGroup()
                        .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(clasificacionCodigosMEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(panelEnfermedadLayout.createSequentialGroup()
                                .addComponent(textoClasificacionEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(clasificacionGeneralEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelEnfermedadLayout.createSequentialGroup()
                                .addComponent(textoAreaEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(areaDiagnosticosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(areaProcedimientosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(panelEnfermedadLayout.createSequentialGroup()
                                .addComponent(clasificacionCodigosEEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(clasificacionCodigosVEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(clasificacionProcedimientosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(panelEnfermedadLayout.createSequentialGroup()
                        .addComponent(textoNombreEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(nombreEnfermedad, javax.swing.GroupLayout.DEFAULT_SIZE, 348, Short.MAX_VALUE)))
                .addContainerGap())
        );
        panelEnfermedadLayout.setVerticalGroup(
            panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEnfermedadLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoNombreEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(nombreEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoClasificacionEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(clasificacionGeneralEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(clasificacionCodigosEEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(clasificacionCodigosVEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(clasificacionCodigosMEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(clasificacionProcedimientosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(panelEnfermedadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(areaDiagnosticosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(areaProcedimientosEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoAreaEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega el Cie 9 MC ingresardo");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        codigoEnfermedad.setFont(Fuente.FUENTE_TITULO_2);
        codigoEnfermedad.setForeground(Fuente.COLOR_NORMAL);
        codigoEnfermedad.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        codigoEnfermedad.setText("Código");
        codigoEnfermedad.setPreferredSize(new java.awt.Dimension(115, 20));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(panelEnfermedad, javax.swing.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
                            .addContainerGap())
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
                            .addComponent(codigoEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(31, 31, 31)))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(codigoEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelEnfermedad, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void clasificacionGeneralEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clasificacionGeneralEnfermedadActionPerformed
        if (clasificacionGeneralEnfermedad.isSelected()) {
            clasificacionCodigosEEnfermedad.setSelected(false);
            clasificacionCodigosVEnfermedad.setSelected(false);
            clasificacionCodigosMEnfermedad.setSelected(false);
            clasificacionProcedimientosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_clasificacionGeneralEnfermedadActionPerformed

    private void clasificacionCodigosEEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clasificacionCodigosEEnfermedadActionPerformed
        if (clasificacionCodigosEEnfermedad.isSelected()) {
            clasificacionGeneralEnfermedad.setSelected(false);
            clasificacionCodigosVEnfermedad.setSelected(false);
            clasificacionCodigosMEnfermedad.setSelected(false);
            clasificacionProcedimientosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_clasificacionCodigosEEnfermedadActionPerformed

    private void clasificacionCodigosVEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clasificacionCodigosVEnfermedadActionPerformed
        if (clasificacionCodigosVEnfermedad.isSelected()) {
            clasificacionGeneralEnfermedad.setSelected(false);
            clasificacionCodigosEEnfermedad.setSelected(false);
            clasificacionCodigosMEnfermedad.setSelected(false);
            clasificacionProcedimientosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_clasificacionCodigosVEnfermedadActionPerformed

    private void clasificacionCodigosMEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clasificacionCodigosMEnfermedadActionPerformed
        if (clasificacionCodigosMEnfermedad.isSelected()) {
            clasificacionGeneralEnfermedad.setSelected(false);
            clasificacionCodigosVEnfermedad.setSelected(false);
            clasificacionCodigosEEnfermedad.setSelected(false);
            clasificacionProcedimientosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_clasificacionCodigosMEnfermedadActionPerformed

    private void clasificacionProcedimientosEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clasificacionProcedimientosEnfermedadActionPerformed
        if (clasificacionProcedimientosEnfermedad.isSelected()) {
            clasificacionGeneralEnfermedad.setSelected(false);
            clasificacionCodigosVEnfermedad.setSelected(false);
            clasificacionCodigosEEnfermedad.setSelected(false);
            clasificacionCodigosMEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_clasificacionProcedimientosEnfermedadActionPerformed

    private void areaProcedimientosEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_areaProcedimientosEnfermedadActionPerformed
        if (areaProcedimientosEnfermedad.isSelected()) {
            areaDiagnosticosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_areaProcedimientosEnfermedadActionPerformed

    private void areaDiagnosticosEnfermedadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_areaDiagnosticosEnfermedadActionPerformed
        if (areaDiagnosticosEnfermedad.isSelected()) {
            areaProcedimientosEnfermedad.setSelected(false);
        }
}//GEN-LAST:event_areaDiagnosticosEnfermedadActionPerformed

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        agregarOModificarCie9mc();
}//GEN-LAST:event_botonAceptarActionPerformed

    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        setCie9mc(null);
        dispose();
}//GEN-LAST:event_botonCancelarActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        //Para salida con cruz
        setCie9mc(null);
    }//GEN-LAST:event_formWindowClosing

    /**
     * Agrega/modifica una persona a la base de datos.
     *
     */
    private void agregarOModificarCie9mc(){
        //Valida los campos
        if (validarCampos()) {
            //Si la enfermedad no existe en la bd
            if (esCie9mcUnica()) {
                //Carga toda la información de la pantalla
                recopilarInformacion();
                
                //Confirmar modificación
                if (CapaPresentacion.confirmarModificacion("cie9mc", "la")) {
                    //Agrega/modifica la enfermedad
                    if (Cie9mcLogica.agregarOModificarCie9mc(datosCie9mc, cie9mc)) {
                        cie9mc = Cie9mcLogica.getCie9mcPorNombreYPorEnBd(
                                datosCie9mc[CapaLogica.CIE9MC_NOMBRE], true);
                        cancelado = false;
                        this.dispose();
                    }
                }
            // Errores
            } else {
                MensajePresentacion.errorDuplicidadObjeto("La enfermedad");
            }
        } else {
            MensajePresentacion.errorDatosInvalidos();
        }
    }

    /**
     * Verifica que no exista otra enfermedad cargada con el mismo nombre.
     *
     * @return true si es único, false en caso contrario
     */
    private boolean esCie9mcUnica() {
        //En caso de modificación, se verifica si no se cambió el nombre
        if (cie9mc.getDetalleCie9mc() != null &&
                cie9mc.getDetalleCie9mc().equalsIgnoreCase(
                nombreEnfermedad.getText())) {
            return true;
        } else if (nombreEnfermedad.getText().isEmpty()){
            return true;
        } else {
            return !Cie9mcLogica.existeCie9mcPorNombreYPorEnBd(
                    nombreEnfermedad.getText(), true);
        }
    }

    /**
     * Recopila los datos de la persona a agregar/modificar.
     *
     */
    private void recopilarInformacion() {
        datosCie9mc = new String[3];

        
        datosCie9mc[CapaLogica.CIE9MC_NOMBRE] =
                nombreEnfermedad.getText();

        String clasificacion = "";
        if (clasificacionGeneralEnfermedad.isSelected()) {
            clasificacion = "G";
        } else if (clasificacionCodigosEEnfermedad.isSelected()) {
            clasificacion = "E";
        } else if (clasificacionCodigosVEnfermedad.isSelected()) {
            clasificacion = "V";
        } else if (clasificacionCodigosMEnfermedad.isSelected()) {
            clasificacion = "M";
        } else if (clasificacionProcedimientosEnfermedad.isSelected()) {
            clasificacion = "P";
        }
        datosCie9mc[CapaLogica.CIE9MC_CLASIFICACION] = clasificacion;

        String area = "";
        if (areaDiagnosticosEnfermedad.isSelected()) {
            area = "D";
        } else if (areaProcedimientosEnfermedad.isSelected()) {
            area = "P";
        }
        datosCie9mc[CapaLogica.CIE9MC_AREA] = area;
    }

    /**
     * Valida los campos ingresados
     *
     * @return true si los campos estan listos para cargarse, false en caso
     * contrario
     */
    private boolean validarCampos() {
        boolean nombreRetorno = true;

        //Manejo de la validación de nombre
        if (!CapaValidacion.validarCampoObligatorio(nombreEnfermedad.getText())) {
            textoNombreEnfermedad.setForeground(
                    Fuente.COLOR_ERROR);
            textoNombreEnfermedad.setToolTipText(InformeError.
                    INFORME_ERROR_ENFERMEDAD_AMBULATORIO_NOMBRE_CIE9M_ENFERMEDAD);
            nombreRetorno = false;
        } else {
            textoNombreEnfermedad.setForeground(
                    Fuente.COLOR_NORMAL);
            textoNombreEnfermedad.setToolTipText(null);
            nombreRetorno = true;
        }

        return nombreRetorno;
    }

    /**
     * Retorna el objeto Cie9mc a agregar.
     *
     * @return El objeto agregado en caso de que la operación fuese exitosa,
     * False en caso contrario
     */
    public static Cie9mc getCie9mc() {
        return cie9mc;
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEnter = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarOModificarCie9mc();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    setCie9mc(null);
                    dispose();
                }
            }
        };
        //Setear eventos
        nombreEnfermedad.addKeyListener(keyListenerEnter);
        nombreEnfermedad.addKeyListener(keyListenerEscape);

        clasificacionGeneralEnfermedad.addKeyListener(keyListenerEnter);
        clasificacionGeneralEnfermedad.addKeyListener(keyListenerEscape);
        clasificacionCodigosEEnfermedad.addKeyListener(keyListenerEnter);
        clasificacionCodigosEEnfermedad.addKeyListener(keyListenerEscape);
        clasificacionCodigosVEnfermedad.addKeyListener(keyListenerEnter);
        clasificacionCodigosVEnfermedad.addKeyListener(keyListenerEscape);
        clasificacionCodigosMEnfermedad.addKeyListener(keyListenerEnter);
        clasificacionCodigosMEnfermedad.addKeyListener(keyListenerEscape);
        clasificacionProcedimientosEnfermedad.addKeyListener(keyListenerEnter);
        clasificacionProcedimientosEnfermedad.addKeyListener(keyListenerEscape);
        areaDiagnosticosEnfermedad.addKeyListener(keyListenerEnter);
        areaDiagnosticosEnfermedad.addKeyListener(keyListenerEscape);
        areaProcedimientosEnfermedad.addKeyListener(keyListenerEnter);
        areaProcedimientosEnfermedad.addKeyListener(keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);
    }

    public static void setCie9mc(Cie9mc cie9mc) {
        if (cancelado) {
            Cie9mcPresentacion.cie9mc = cie9mc;
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JRadioButton areaDiagnosticosEnfermedad;
    private javax.swing.JRadioButton areaProcedimientosEnfermedad;
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JRadioButton clasificacionCodigosEEnfermedad;
    private javax.swing.JRadioButton clasificacionCodigosMEnfermedad;
    private javax.swing.JRadioButton clasificacionCodigosVEnfermedad;
    private javax.swing.JRadioButton clasificacionGeneralEnfermedad;
    private javax.swing.JRadioButton clasificacionProcedimientosEnfermedad;
    private javax.swing.JLabel codigoEnfermedad;
    private javax.swing.JTextField nombreEnfermedad;
    private javax.swing.JPanel panelEnfermedad;
    private javax.swing.JLabel textoAreaEnfermedad;
    private javax.swing.JLabel textoClasificacionEnfermedad;
    private javax.swing.JLabel textoDescriptivoVentana;
    private javax.swing.JLabel textoNombreEnfermedad;
    // End of variables declaration//GEN-END:variables
    private static Cie9mc cie9mc;
    private String[] datosCie9mc;
    private static boolean cancelado;
}
